package io;

import java.io.*;

/**
 * @author Huangjin
 * @version 1.0
 * describe:缓冲流事一对高级流，作用是加快读写效率
 *   1）BufferedInputStream：缓冲输入流
 *   2）BufferedOutputStream：缓冲输出流
 *  缓冲流读写快的原因：
 *   1）缓冲流的内部有一个8KB的子节数组，
 *   你看着是一个字节的读写，但缓冲流已经把它转换为块读写了
 *   缓冲流何时用才有意义：
 *      1）不同的高级流有不同的功能，但只有缓冲流才具有加速功能（块读写），
 *      其他的高级流不具备加速功能，都是单字节读写，
 *      此时若又向完成邮箱加速处理，则需要流连接，将功能流连到缓冲流上
 * @date 2023/3/8 10:51
 */
public class CopyDemo3Buffered {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("3.jpg");
        BufferedInputStream bis = new BufferedInputStream(fis);
        FileOutputStream fos = new FileOutputStream("3_cp2.jpg");
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        long start = System.currentTimeMillis();
        int d;
        while ((d=bis.read())!=-1){
            bos.write(d);
        }
        long end = System.currentTimeMillis();
        System.out.println("复制完毕！耗时："+(end-start)+"ms");
        bis.close();
        bos.close();
    }
}
